Arbitrarily grouping computer system resources

ABSTRACT

A method for arbitrarily grouping computer system resources includes receiving a resource policy to be applied to a group of resources associated with a user. The resource policy includes a unique user-defined label assigned to each resource of the group of resources. The method also includes identifying the group of resources among a plurality of resources using the user-defined label. Here, the plurality of resources is associated with the user and distributed across a plurality of different computing environments. For each identified resource of the group of resources, the method also includes applying the resource policy to a corresponding identified resource by accessing the respective computing environment where the corresponding identified resource resides.

CROSS REFERENCE TO RELATED APPLICATIONS

This U.S. patent application is a continuation of, and claims priorityunder 35 U.S.C. § 120 from, U.S. patent application Ser. No. 17/817,201,filed on Aug. 3, 2022, which is a continuation of U.S. patentapplication Ser. No. 17/339,019, now U.S. Pat. No. 11,438,235, filed onJun. 4, 2021, which is a continuation of U.S. patent application Ser.No. 16/579,180, now U.S. Pat. No. 11,038,762, filed on Sep. 23, 2019.The disclosures of these prior applications are considered part of thedisclosure of this application and are hereby incorporated by referencein their entireties.

TECHNICAL FIELD

This disclosure relates to arbitrarily grouping computer systemresources.

BACKGROUND

As more and more users utilize computing environments (e.g., cloudcomputing), there is a greater likelihood that a user has or usesresources in separate computing environments. Even though more optionsfor computing environments may lead to innovation and/or cost effectivecomputing environment providers, unfortunately, this presents potentialissues for resource management. For instance, computing environments mayhave proprietary features or features that deviate from one provider tothe next. With even small differences, the configuration of a user'sresources inevitably will be inconsistent across all computingplatforms. By having such inconsistencies, users may be left coping withtheir own management methods especially when a user changes providers ordecides to consolidate providers.

SUMMARY

One aspect of the disclosure provides a method for arbitrarily groupingcomputer system resources. The method includes receiving, at dataprocessing hardware, a resource policy to be applied to a group ofresources associated with a user. The resource policy includes a uniqueuser-defined label assigned to each resource of the group of resources.The method also includes identifying, by the data processing hardware,the group of resources among a plurality of resources using theuser-defined label. The plurality of resources are associated with theuser and distributed across a plurality of different computingenvironments in communication with the data processing hardware. Foreach identified resource of the group of resources, the method includesapplying, by the data processing hardware, the resource policy to acorresponding identified resource by accessing the respective computingenvironment where the corresponding identified resource resides.

Implementations of the disclosure may include one or more of thefollowing optional features. In some implementations, the uniqueuser-defined label includes a key-value pair. The resource policy mayinclude a constraint for the key of the key-value pair for the uniqueuser-defined label. Additionally or alternatively, the resource policymay include a constraint for the value of the key-value pair for thelabel. Optionally, the resource policy may include a first policy forthe key of the key-value pair and a second policy for the value of thekey-value pair.

In some examples, the resource policy includes at least one of an accesscontrol policy, a firewall policy, a networking policy, or a quotapolicy. The plurality of computing environments may include at least oneprivate computing environment and at least one public computingenvironment. The data processing hardware may be configured tocommunicate with on-premise computing environments, private computingenvironments, and public cloud-based computing environments. Theplurality of resources may include at least one of a virtual machine, adatabase, a key-value store, or a network.

Another aspect of the disclosure provides a method for applying policiesto computer system resources in a computing environment. The methodincludes receiving, at data processing hardware, a resource policy to beapplied to a group of resources associated with a user. The resourcepolicy includes a unique user-defined label assigned to each resource ofthe group of resources. The unique user-defined label includes akey-value pair. The method further includes identifying, by the dataprocessing hardware, the group of resources among a plurality ofresources using the user-defined label and associated with the user. Foreach identified resource of the group of resources, the method alsoincludes applying, by the data processing hardware, the resource policyto a corresponding identified resource by governing the key-value pairof the unique user-defined label.

This aspect may include one or more of the following optional features.In some configurations, the resource policy includes a constraint forthe key of the key-value pair for the unique user-defined label. Theresource policy may include a constraint for the value of the key-valuepair for the label. The resource policy may also include a first policyfor the key of the key-value pair and a second policy for the value ofthe key-value pair. The resource policy may include at least one of anaccess control policy, a firewall policy, a networking policy, or aquota policy. Optionally, the plurality of resources may include atleast one of a virtual machine, a database, a key-value store, or anetwork.

Yet another aspect of the disclosure provides a system for arbitrarilygrouping computer system resources. The system includes data processinghardware and memory hardware in communication with the data processinghardware. The memory hardware stores instructions that when executed onthe data processing hardware cause the data processing hardware toperform operations. The operations include receiving a resource policyto be applied to a group of resources associated with a user, theresource policy includes a unique user-defined label assigned to eachresource of the group of resources.

The operations also include identifying the group of resources among aplurality of resources using the user-defined label. The plurality ofresources are associated with the user and distributed across aplurality of different computing environments in communication with thedata processing hardware. For each identified resource of the group ofresources, the operations also include applying the resource policy to acorresponding identified resource by accessing the respective computingenvironment where the corresponding identified resource resides.

This aspect may include one or more of the following optional features.In some implementations, the unique user-defined label includes akey-value pair. The resource policy may include a constraint for the keyof the key-value pair for the unique user-defined label. Additionally oralternatively, the resource policy may include a constraint for thevalue of the key-value pair for the label. Optionally, the resourcepolicy may include a first policy for the key of the key-value pair anda second policy for the value of the key-value pair.

In some examples, the resource policy includes at least one of an accesscontrol policy, a firewall policy, a networking policy, or a quotapolicy. The plurality of computing environments may include at least oneprivate computing environment and at least one public computingenvironment. The data processing hardware may be configured tocommunicate with on-premise computing environments, private computingenvironments, and public cloud-based computing environments. Theplurality of resources may include at least one of a virtual machine, adatabase, a key-value store, or a network.

Yet another aspect of the disclosure provides a system for arbitrarilygrouping computer system resources. The system includes data processinghardware and memory hardware in communication with the data processinghardware. The memory hardware stores instructions that when executed onthe data processing hardware cause the data processing hardware toperform operations. The operations include receiving a resource policyto be applied to a group of resources associated with a user. Theresource policy includes a unique user-defined label assigned to eachresource of the group of resources. The unique user-defined labelincludes a key-value pair. The operations also include identifying thegroup of resources among a plurality of resources using the user-definedlabel and associated with the user. For each identified resource of thegroup of resources, the operations also include applying the resourcepolicy to a corresponding identified resource by governing the key-valuepair of the unique user-defined label.

This aspect may include one or more of the following optional features.In some configurations, the resource policy includes a constraint forthe key of the key-value pair for the unique user-defined label. Theresource policy may include a constraint for the value of the key-valuepair for the label. The resource policy may also include a first policyfor the key of the key-value pair and a second policy for the value ofthe key-value pair. The resource policy may include at least one of anaccess control policy, a firewall policy, a networking policy, or aquota policy. Optionally, the plurality of resources may include atleast one of a virtual machine, a database, a key-value store, or anetwork.

The details of one or more implementations of the disclosure are setforth in the accompanying drawings and the description below. Otheraspects, features, and advantages will be apparent from the descriptionand drawings, and from the claims.

DESCRIPTION OF DRAWINGS

FIGS. 1A and 1B are schematic views of example multi-environmentsystems.

FIGS. 2A and 2B are schematic views of an example environment manager.

FIG. 2C is a schematic view of a user interacting with either anenvironment manager layer or an environment layer.

FIG. 3 is an example arrangement of operations for an environmentmanager.

FIG. 4 is an example arrangement of operations for applying policies toresources in a computing environment.

FIG. 5 is a schematic view of an example computing device that may beused to implement the systems and methods described herein.

Like reference symbols in the various drawings indicate like elements.

DETAILED DESCRIPTION

Today people (also referred to as users or customers) typically havecomputing resources that run across multiple computing environments(e.g., cloud-based computing environments). Each individual computingenvironment may have its own unique interface facilitating a customer'sinteraction with the resources within the computing environment. Forinstance, the interface facilitates how to create computing instances orhow to define policies for the resources. Since a user may utilize morethan one computing environment for his or her resources, differencesbetween interfaces for these computing environments is likely to lead todiverging management capabilities for the user's resources. In otherwords, when a user has resources across multiple computing environments,the user may not be able to manage all of his or her resources in thesame manner (e.g., using a single interface) due to managementlimitations or proprietary forms of resource management at a particularcomputing environment. At best, the burden is on the user to maintainhis or her own uniform resource management, if possible.

FIG. 1A is an example of a traditional multi-environment system 100, 100a for a user's resources. Here, a user 110, with a user device 112(e.g., a computer, laptop, tablet, mobile phone, wearable, smart device,etc.), communicates across a network 120 to one or more computingenvironments 130 (e.g., cloud computing environments) where his or herresources 140 reside. The user 110 generally refers to an entity thatowns or has some rights to access and/or to manage one or more computingresources 140. For instance, the user 110 is a customer of one or morecomputing environment providers (e.g., cloud computing serviceprovider). Based on various activities of the user 110, the user 110 mayhave resources 140 distributed across multiple computing environments130. In some examples, the user 110 refers to an enterprise (e.g., anorganization) that may include a number of employees that interact withresources 140 across one or more computing environments 130. Forinstance, the enterprise is an organization with different offices,teams, departments, business units, or job functions that preside overresources 140. In other words, the user 110 may refer to a single personor a group of people.

The resources 140 of the user 110 generally refer to computing resourcessuch as networks, servers, storage (e.g., databases, data stores,key-value stores), virtual machines (VMs), or other resources related toapplications and services (e.g., clusters). For example, FIGS. 1A and 1Billustrate the user 110 interacting with resources 140, 140 a—n such asservers, VMs, and databases in each computing environment 130. The user110 may interact with these resources 140 using an application (e.g., aweb-browser application) executable on the user device 112. Althougheach computing environment 130 is shown with a similar number ofresources 140, the number of resources 140 within a computingenvironment 130 may vary and/or be scalable; allowing a computingenvironment 130 to have any number of resources 140 of the user 110(e.g., whether balanced between computing environments 130 or not).

The user 110 may use a number of different computing environments 130upon which to host, to store, or to execute functionality related toresources 140. For example, one or more of the computing environments130 correspond to cloud computing environments. Here, the type ofcomputing environment 130 may vary, but, generally speaking, a computingenvironment 130 attempts to provide a convenient and on-demandenvironment with network access to provision resources (e.g., resources140 with minimal management effort or service provider interaction).Some examples of computing environments 130 include public computingenvironments PubE (e.g., the computing environments 130, 130 a—d) orprivate computing environments PrivE (e.g., the computing environments130, 130 e). A public computing environment PubE refers to a computingenvironment 130 offered to the general public with shared access tocomputing hardware (e.g., data processing hardware or memory hardware)within the computing environment 130. On the other hand, a privatecomputing environment PrivE refers to an exclusive computing environment130 for one or more users 110 authorized to access the computingenvironment 130. In some examples, a user 110 uses a private computingenvironment PrivE for security reasons or perhaps to comply with variousdata regulations (e.g., to secure private data). A private computingenvironment PrivE may be configured by a computing environment providerwith special customization or stem from resource partitions made in apublic computing environment PubE.

Another example of a computing environment 130 is an on-premisecomputing environment 130. An on-premise computing environment 130generally refers to a computing environment 130 setup at a location ofthe user 110. This type of computing environment 130 based on itslocation is generally private, but may, in some configurations, beaccessible more publically or on a limited basis. Because the user 110may use different computing environments 130 for different reasons, theuser 110 may have to interact with different types of computingenvironments 130. For instance, FIGS. 1A and 1B show four publiccomputing environments 130 a—d and one private computing environment 130e. Even though a user 110 may prefer to have his or her own privatecomputing environment PrivE, this may be unreasonable (e.g., from a costperspective) or difficult in all circumstances; resulting in the user110 having resources 140 associated with multiple types of computingenvironments 130.

Each computing environment 130 may have different configurations for themanagement of resources 140 residing within computing environment 130.These configurations may define policies 132 that set forth guidelinesfor operations in the computing environment 130. Policies 132 may beconfigured for integrity (e.g., resource integrity or more generalintegrity of the computing environment as a whole), security, privacy,financial management, cost optimization, performance management, etc.Some policies 132 are constraint-based (e.g., constrain how a resource140 operates). In other words, a constraint may refer to a policy thatrestricts use or operation of a resource. For instance, access controlpolicies 132 _(ACP) (ACP) designate which entities may access and/orcontrol one or more resources 140. Other examples of policies 132include firewall policies (e.g., block/allow network traffic),networking policies (e.g., rule(s) for network access), or quotapolicies (e.g., quotas that dictate resource allocation/usage). Policies132 may be specific to a resource 140 or a characteristic of a resource140 (e.g., a type of resource 140, an owner of the resource 140, afunction of a resource 140, etc.) or more broadly applied (e.g.,universal policies 132 for the computing environment 130). In someexamples, an administrator of the computing environment 130 configuresone or more policies 132. In some implementations, the user 110configures one or more policies 132 (e.g., customizes policies 132 fordifferent resources 140). In yet other examples, policies 132 are set bya mix of the administrator and the user 110.

In some examples, a computing environment 130 manages resources 140 witha resource identifier (ID) 134. The resource ID 134 may includeinformation about the resource 140, a unique identifier (UID) assignedto a resource 140 (e.g., by an administrator or a user 110 of thecomputing environment 130), and/or some form of a label or tag for theresource 140. For example, an architect of a computing environment 130generates the resource ID 134 during configuration of the computingenvironment 130 and/or allocation of resources 140 (e.g., to users 110).In some examples, the resource ID 134 includes a location of theresource 140 within the computing environment 130. Unfortunately for auser 110, each computing environment 130 often includes its own form ofresource IDs 134 or lack thereof. For instance, FIG. 1A of thetraditional multi-environment system 100 a illustrates a differentresource ID system for each computing environment 130 (e.g., resourcesIDs 134, 134 e). In other words, some resource IDs 134 may beproprietary to the computing environment 130 or managed with varyingdegrees of standards. Because of the potential variance in theseresource IDs 134 within a single computing environment 130 or issueswith cross compatibility between different types of resource IDs 134among multiple computing environments 130, the universal management ofresources 140 by resource IDs 134 may be quite difficult.

Due to at least these reasons, universal policy management at a resourceID level is generally disadvantageous. For instance, some computingenvironments 130 include resource IDs 134, but do not permit policies132 to be applied at the resource ID level. Other computing environments130 have resource IDs 134, but these resource IDs are not crosscompatible between computing environments 130. Moreover, besides generalcompatibility issues, when computing environments 130 have resource IDs134, these computing environments 130 do not have a means to applypolicies 132 to a substance of the resource ID 134 such as underlyingdetails or features of the resource ID 134. Without substantiveapplication, policies 132 such as access controls become burdensome toimplement for security or privacy purposes at scale. To overcome some ofthese issues, an environment manager 200 (also referred to as manager200) at a management layer 202 is configured to manage structures ofresource IDs 134 and to make policies 132 utilizing the structuresacross one or more computing environments 130.

FIG. 1B is similar to FIG. 1A except that the multi-environment system100, 100 b includes layers 102, 202 with the manager 200 on themanagement layer 202 managing one or more computing environments 130,130 a—e on an environment layer 202. The management layer 202 refers toan abstraction layer that is interoperable with multiple differentcomputing environments 130 (i.e., interoperable with the environmentlayer 202). For instance, the manager 200 has access to the computingenvironment(s) 130 to perform functions of a labeler 210 and a policymaker 220. Here, the environment layer 102 refers to a layer thatincludes one or more computing environments 130 (e.g., the differentcomputing environments 130, 130 a-e). Although FIG. 1B depicts themanager 200 communicating with five computing environments 130 a-e, themanager 200 may communicate with any number of computing environments130 to enable various degrees of scaling (e.g., more or less computingenvironments 130).

In some examples, the labeler 210 is configured to define a labelstructure 212 for resources 140 of the user 110. Here, the labelstructure 212 refers to a namespace for resources 140. Some examples oflabel structures 212 include associative arrays such as a key-value pair214. A key-value pair 214 is a label structure 212 that maps a key index(i.e., a key 214, 214 _(K)) to a particular data value (i.e., a value214, 214 _(V)). Both the key 214 _(K) and the value 214 _(V) as a wholemay define a particular label 216. More generally speaking, a label 216(FIG. 2A) refers to a unique user-defined string of characters in thenamespace. As part of the manager 200, the labeler 210 may apply and/ormanage the label structure 212 (or more particularly a given label 216)across to any number of computing environments 130 in communication withthe manager 200 (e.g., all computing environments 130). For instance,FIG. 1B illustrates the label structures 212, 212 a-e in dotted lineswithin each computing environment 130 of the environment layer 102. Inother words, the user 110 (e.g., through the labeler 210) may generate astandard label structure 212 that may be applied to his or her resources140 without the user 110 having to manage such a label structure 212 ateach computing environment 130. In some examples, the user 110 managesat the manager 200 whether the label structure 212 is applieduniversally (e.g., to all resources 140 of the user 110) or moreselectively to a subset of all resources 140 of the user 110 (e.g., to asingle resource 140 or a group of resources 140). The user device 112may execute an application that implements a user interface for allowingthe user 110 to interact with the manager 200. In some implementations,the policy maker 220 is configured to generate a resource policy 222.Here, when a policy 132 impacts a resource 140, it may be referred to asa resource policy 222 (e.g., as shown FIG. 1B). In some examples, themanager 200 leverages its creation of label structures 212 across one ormore computing environments 130 by having the policy maker 220 generateone or more resource policies 222, 222 a-e for a given label 216 formedaccording to the label structure 212. With this approach, resources 140may be controlled through resource policies 222 operating at a labellevel. Furthermore, the manager 200 may centrally control resourcepolicies 222 for a user 110 as resources 140 of the user 110 are labeledor updated with labels 216. By having central control, the manager 200may provide a consistent management experience across hybrid computingenvironments 130 even as these computing environments 130 continuallygrow or change.

Referring to FIG. 2A, in some examples, the user 110 uses the manager200 to generate labels 216 (e.g., with the labeler 210) to conveyresources policies 222 to control resources 140. Here, the user 110forms arbitrary groups 230, 230 a—d by assigning a number of resources140 the same label 216 or same set of labels 216. With groups 230 ofresources 140, the groups 230 can then be controlled through resourcespolicies 222 generated by the policy maker 220 of the manager 200. Withthis approach, a label 216 may be overlain on top of a resourcehierarchy (i.e., a hierarchy of groupings 230) and allow the manager 200to generate controls (e.g., access control policies 132 _(ACP)) asresource policies 222 for the entire hierarchy. Furthermore, separategroups 230 formed by different labels 216 may correspond to separatecontrols that cater to roles or purposes of a group 230.

For example, in FIG. 2A, the user 110 is an organization. As anorganization, the user 110 may have resources 140 for different units orfunctions of the organization. For example, a test team formed by twoemployees uses resources 140, 140 a—f in an on-premises computingenvironment 130 for performing testing for the organization. Similarly,a production team with six employees has/uses resources 140, 140 g—j ina private computing environment PrivE. Here, the organization 110 usesthe manager 200 to define access control policies 132 _(ACP) for thesedifferent teams. For instance, the user 110 groups the test team into afirst group 230, 230 a by assigning the resources 140 a-f with the samelabel 216, 216 a of “operation=test.” Here, the characters “operation”refer to the key 214 _(K) of the label 216 a while the characters “test”refer to the value 214 _(V) of the label 216 a. With the label 216 a of“operation=test,” the user 110 uses the manager 200 to generate a firstresource policy 222, 222 a specific to the test team formed by twoemployees, employee A and employee B. In other words, the first resourcepolicy 222 a defines that employee A and employee B have control accessto resources 140 a-f (i.e., resources 140 a-f labeled “operation=test”).

For the production team formed by six employees, the user 110 uses themanager 200 to assign production resources 140 g-j with the label 216 bof “operation=production” to form a production group 230, 230 b. Here,the labeler 210 (e.g., by input of the user 110) assigned the same key214 _(K) “operation” to a different value 214 _(V) “production” todifferentiate between testing operations and production operations. Withthe production group 230 b, the manager 200 receives a second resourcepolicy 222, 222 b to be applied to the production group 230 b thatallows four of the six employees to have access control to all resources140 g-j within the group 230 b (i.e., all resources 140 g-j that belongto the production team). To go one step further, the user 110, as anorganization, may have production in the United States and production inEurope that uses different production resources 140 (e.g., U.S.production resources 140 g-h and European production resources 140 i-j).To be able to apply policies 132 to these production sub-units, the user110 forms a third group 230, 230 c by labeling the U.S. productionresources 140 g-h with the third label 216, 216 c of “Loc=US” and afourth group 230, 230 d by labeling the European production resources140 i-j with the fourth label 216, 216 d of “Loc=EUR.” Here, byassigning the third label 216 c and the fourth label 216 d the resourcepolicies 222, 222 c-d, the manager 200 may provide a fifth employeeaccess to resources 140 g-h and a sixth employee access to resources 140i-j. In other words, the fifth employee may be at the specific U.S.production plant and receive access to U.S. production resources 140 g-hwithout receiving access to other production resources 140 i-j. The sameapplies for the sixth employee. The sixth employee may be at a specificEuropean production plant and receive access to European productionresources 140 i-j without receiving access to other production resources140 g-h (e.g., U.S. production resources 140 g-h). In this example, thefour employees that receive access to all production resources 140 g-jmay be production engineers that interface with either facility in theUnited States or Europe and thus need global access.

FIG. 2B further elaborates on the functionality of the manager 200 byillustrating the manager 200 applying the resource policy 222 to eachresource 140 within a group 230 regardless of its computing environment130. More particularly, the manager 200 is able to use its compatibilitywith the environment layer 102 to access computing environments 130 toapply resource policies 222 where each resource 140 of a group 230resides. In some implementations, such as FIG. 2B, the manager 200receives multiple resource policies 222 a-c from the user 110 to applyto the unique user-defined labels 216 a-c that form groups 230 a-c.Here, FIG. 2B depicts resources 140 with their associated computingenvironments 130 of FIG. 1B. In this example, the resources 140 a-e ofthe first group 230 a with label 216 a correspond to a resource 140 awithin the third computing environment 130 c and four resources 140 b-eof the first computing environment 130 a such that the manager 200applies the first policy 222 a to resources 140 located within both ofthose computing environments 130 a, 130 c. In a similar manner, theresources 140 e-g of the second group 230 b with label 216 b correspondto a resource 140 e within the first computing environment 130 a, aresource 140 f within the fourth computing environment 130 d, and aresource 140 g in the fifth computing environment 130 e. For the secondgroup 230 b, the manager 200 applies the second policy 222 b toresources 140 e-g within these three environments 130 a, 130 d, 130 e.For the third group 230 c, the resources 140 h-j with label 216 ccorrespond to a three resource 140 h-j within the third computingenvironment 130 c such that the manager 200 applies the third policy 222c to the third computing environment 130 c.

In some examples, such as FIG. 2B, a policy (e.g., the third policy 222c) applies to one or both of the key-value pair 214 forming the label216. In other words, the manager 200 is configured to apply a policy 132to a key 214 _(K) of the label 216, to a value 214 _(V) of the label216, or at the entire label 216 as previously described. To illustratewith an access control policy 132 _(ACP), the manager 200 may receive aresource policy 222 from the user 110 that restricts those who maycontrol labeling (or grouping) resources 240 with a particular key 214_(K) and/or value 214 _(V). This approach may prevent someone withaccess to a resource 140 from changing its label 216 in a detrimentalway. Using the organization of FIG. 2A, an engineering member of theproduction team may not want a production employee at the Europeanproduction plant to change a label 216 for a resource 140 to assign itfrom Europe to the U.S. Therefore, the manager 200 may apply a resourcepolicy 222 that is an access control policy restricting employees inEurope from changing the value 214 _(V) of “EUR.” Additionally oralternatively, the same employee could be restricted with a resourcepolicy 222 from changing the key 214 _(K) from “Loc” to the key 214 _(K)of “operation.”

In some configurations, such as FIG. 2C, the user 110 configures asingle computing environment 130 a to implement policies 132 based on alabel structure 212 that is not dictated at the environment managementlayer 202. For instance, the user 110 predominantly uses resources 140in a particular computing environment 130. In these instances, the user110 may set up a single computing environment 130 (e.g., that he or sheoften uses) with label-managed policies rather than configure themanagement experience of the manager 200. Even though it is a singlecomputing environment 130, the user 110 may manage his or her resources140 by dividing these resources 140 into one or more groups 230 (e.g.,shown as resources 140 k-p assigned to group 230 b) by applying a label216 (e.g., a label 216 with a label structure 212 of a key-value pair214) to each resource 140 in the group 230. With unique user-definedlabel(s) 216, the user 110 may assign resource policies 222 c-d to thelabel 216 (e.g., either of the key 214 _(K), the value 214 _(V), or thelabel 216 generally) to implement a policy 132 on the group 230 (e.g.,in a similar manner to the manager 200). FIG. 2C also illustrates thatthe user 110 may have either option of managing at the management layer202 (e.g., with the manager 200) or the environment layer 102 (e.g., onthe user's own accord).

FIG. 3 is a flowchart of an example arrangement of operations for amethod 300 of arbitrarily grouping computer system resources. Atoperation 302, the method 300 includes receiving, at an environmentmanagement system 200, a resource policy 222 to be applied to a group230 of resources 140 associated with a user 110. The resource policy 222includes a unique user-defined label 216 (e.g., one or more uniqueuser-defined label 216) that is assigned to each resource 140 of thegroup 230 of resources 140. At operation 304, the method 300 includesidentifying the group 230 of resources 140 among a plurality ofresources 140 associated with the user 110 and distributed across aplurality of different computing environments 130 in communication withthe environment management system 200. At operation 306, for eachidentified resource 140 of the group 230 of resources 140, the method300 includes applying the resource policy 222 to a correspondingidentified resource 140 by accessing the respective computingenvironment 130 where the corresponding identified resource 140 resides.

FIG. 4 is an example arrangement of operations for a method 400 ofapplying policies 132 to resources 140 in a computing environment 130.At operation 402, the method 400 includes receiving a resource policy222 to be applied to a group 230 of resources 140 associated with a user110. The resource policy 222 includes a unique user-defined label 216(e.g., one or more unique user-defined label 216) assigned to eachresource 140 of the group 230 of resources 140. Here, the uniqueuser-defined label 216 includes a key-value pair 214. At operation 404,the method 400 includes identifying the group 230 of resources 140 amonga plurality of resources 140 using the unique user-defined label 216 andassociated with the user 110. At operation 406, for each identifiedresource 140 of the group 230 of resources 140, the method 400 includesapplying the resource policy 222 to a corresponding identified resource140 by governing the key-value pair 214 of the unique user-defined label216.

FIG. 5 is a schematic view of an example computing device 500 that maybe used to implement the systems (e.g., the manager 200) and methods(e.g., the method 300 and/or the method 400) described in this document.The computing device 500 is intended to represent various forms ofdigital computers, such as laptops, desktops, workstations, personaldigital assistants, servers, blade servers, mainframes, and otherappropriate computers. The components shown here, their connections andrelationships, and their functions, are meant to be exemplary only, andare not meant to limit implementations of the disclosure describedand/or claimed in this document.

The computing device 500 includes a processor 510 (e.g., data processinghardware), memory 520 (e.g., memory hardware), a storage device 530, ahigh-speed interface/controller 540 connecting to the memory 520 andhigh-speed expansion ports 550, and a low speed interface/controller 560connecting to a low speed bus 570 and a storage device 530. Each of thecomponents 510, 520, 530, 540, 550, and 560, are interconnected usingvarious busses, and may be mounted on a common motherboard or in othermanners as appropriate. The processor 510 can process instructions forexecution within the computing device 500, including instructions storedin the memory 520 or on the storage device 530 to display graphicalinformation for a graphical user interface (GUI) on an externalinput/output device, such as display 580 coupled to high speed interface540. In other implementations, multiple processors and/or multiple busesmay be used, as appropriate, along with multiple memories and types ofmemory. Also, multiple computing devices 500 may be connected, with eachdevice providing portions of the necessary operations (e.g., as a serverbank, a group of blade servers, or a multi-processor system).

The memory 520 stores information non-transitorily within the computingdevice 500. The memory 520 may be a computer-readable medium, a volatilememory unit(s), or non-volatile memory unit(s). The non-transitorymemory 520 may be physical devices used to store programs (e.g.,sequences of instructions) or data (e.g., program state information) ona temporary or permanent basis for use by the computing device 500.Examples of non-volatile memory include, but are not limited to, flashmemory and read-only memory (ROM)/programmable read-only memory(PROM)/erasable programmable read-only memory (EPROM)/electronicallyerasable programmable read-only memory (EEPROM) (e.g., typically usedfor firmware, such as boot programs). Examples of volatile memoryinclude, but are not limited to, random access memory (RAM), dynamicrandom access memory (DRAM), static random access memory (SRAM), phasechange memory (PCM) as well as disks or tapes.

The storage device 530 is capable of providing mass storage for thecomputing device 500. In some implementations, the storage device 530 isa computer-readable medium. In various different implementations, thestorage device 530 may be a floppy disk device, a hard disk device, anoptical disk device, or a tape device, a flash memory or other similarsolid state memory device, or an array of devices, including devices ina storage area network or other configurations. In additionalimplementations, a computer program product is tangibly embodied in aninformation carrier. The computer program product contains instructionsthat, when executed, perform one or more methods, such as thosedescribed above. The information carrier is a computer- ormachine-readable medium, such as the memory 520, the storage device 530,or memory on processor 510.

The high speed controller 540 manages bandwidth-intensive operations forthe computing device 500, while the low speed controller 560 manageslower bandwidth-intensive operations. Such allocation of duties isexemplary only. In some implementations, the high-speed controller 540is coupled to the memory 520, the display 580 (e.g., through a graphicsprocessor or accelerator), and to the high-speed expansion ports 550,which may accept various expansion cards (not shown). In someimplementations, the low-speed controller 560 is coupled to the storagedevice 530 and a low-speed expansion port 570. The low-speed expansionport 570, which may include various communication ports (e.g., USB,Bluetooth, Ethernet, wireless Ethernet), may be coupled to one or moreinput/output devices, such as a keyboard, a pointing device, a scanner,or a networking device such as a switch or router, e.g., through anetwork adapter.

The computing device 500 may be implemented in a number of differentforms, as shown in the figure. For example, it may be implemented as astandard server 500 a or multiple times in a group of such servers 500a, as a laptop computer 500 b, or as part of a rack server system 500 c.

Various implementations of the systems and techniques described hereincan be realized in digital electronic and/or optical circuitry,integrated circuitry, specially designed ASICs (application specificintegrated circuits), computer hardware, firmware, software, and/orcombinations thereof. These various implementations can includeimplementation in one or more computer programs that are executableand/or interpretable on a programmable system including at least oneprogrammable processor, which may be special or general purpose, coupledto receive data and instructions from, and to transmit data andinstructions to, a storage system, at least one input device, and atleast one output device.

These computer programs (also known as programs, software, softwareapplications or code) include machine instructions for a programmableprocessor, and can be implemented in a high-level procedural and/orobject-oriented programming language, and/or in assembly/machinelanguage. As used herein, the terms “machine-readable medium” and“computer-readable medium” refer to any computer program product,non-transitory computer readable medium, apparatus and/or device (e.g.,magnetic discs, optical disks, memory, Programmable Logic Devices(PLDs)) used to provide machine instructions and/or data to aprogrammable processor, including a machine-readable medium thatreceives machine instructions as a machine-readable signal. The term“machine-readable signal” refers to any signal used to provide machineinstructions and/or data to a programmable processor.

The processes and logic flows described in this specification can beperformed by one or more programmable processors executing one or morecomputer programs to perform functions by operating on input data andgenerating output. The processes and logic flows can also be performedby special purpose logic circuitry, e.g., an FPGA (field programmablegate array) or an ASIC (application specific integrated circuit).Processors suitable for the execution of a computer program include, byway of example, both general and special purpose microprocessors, andany one or more processors of any kind of digital computer. Generally, aprocessor will receive instructions and data from a read only memory ora random access memory or both. The essential elements of a computer area processor for performing instructions and one or more memory devicesfor storing instructions and data. Generally, a computer will alsoinclude, or be operatively coupled to receive data from or transfer datato, or both, one or more mass storage devices for storing data, e.g.,magnetic, magneto optical disks, or optical disks. However, a computerneed not have such devices. Computer readable media suitable for storingcomputer program instructions and data include all forms of non-volatilememory, media and memory devices, including by way of examplesemiconductor memory devices, e.g., EPROM, EEPROM, and flash memorydevices; magnetic disks, e.g., internal hard disks or removable disks;magneto optical disks; and CD ROM and DVD-ROM disks. The processor andthe memory can be supplemented by, or incorporated in, special purposelogic circuitry.

To provide for interaction with a user, one or more aspects of thedisclosure can be implemented on a computer having a display device,e.g., a CRT (cathode ray tube), LCD (liquid crystal display) monitor, ortouch screen for displaying information to the user and optionally akeyboard and a pointing device, e.g., a mouse or a trackball, by whichthe user can provide input to the computer. Other kinds of devices canbe used to provide interaction with a user as well; for example,feedback provided to the user can be any form of sensory feedback, e.g.,visual feedback, auditory feedback, or tactile feedback; and input fromthe user can be received in any form, including acoustic, speech, ortactile input. In addition, a computer can interact with a user bysending documents to and receiving documents from a device that is usedby the user; for example, by sending web pages to a web browser on auser's client device in response to requests received from the webbrowser.

A number of implementations have been described. Nevertheless, it willbe understood that various modifications may be made without departingfrom the spirit and scope of the disclosure. Accordingly, otherimplementations are within the scope of the following claims.

What is claimed is:
 1. A computer-implemented method executed by dataprocessing hardware that causes the data processing hardware to performoperations comprising: grouping multiple resources from a plurality ofresources into a resource group, the plurality of resources distributedacross a hybrid computing environment comprising a public computingenvironment and a private computing environment, the data processinghardware in communication with the hybrid computing environment andinteroperable with the public computing environment and the privatecomputing environment; assigning a user-defined label to each resourcein the resource group, the user-defined label compatible with the publiccomputing environment and the private computing environment; receiving aresource policy to be applied to the resource group assigned theuser-defined label, the resource policy defining an access controlpolicy for an authorized group of users allowed to edit the user-definedlabel assigned to each resource in the resource group; and applying, viathe public computing environment and the private computing environment,the resource policy to the multiple resources in the resource group. 2.The computer-implemented method of claim 1, wherein the user-definedlabel comprises a key-value pair.
 3. The computer-implemented method ofclaim 2, wherein the key-value pair comprises a unique user-definedstring of characters.
 4. The computer-implemented method of claim 2,wherein a key of the key-value pair is associated with multipledifferent values.
 5. The computer-implemented method of claim 1, whereinreceiving the resource policy comprises receiving the resource policyfrom an administrative user.
 6. The computer-implemented method of claim1, wherein the resource policy further defines at least one of afirewall policy, a networking policy, or a quota policy.
 7. Thecomputer-implemented method of claim 1, wherein the private computingenvironment comprises an on-premises computing environment.
 8. Thecomputer-implemented method of claim 1, wherein the plurality ofresources comprise at least one of a virtual machine, a database, akey-value store, or a network.
 9. The computer-implemented method ofclaim 1, wherein the user-defined label comprises a location of theresource group within the hybrid computing environment.
 10. Thecomputer-implemented method of claim 1, wherein the user-defined labelcomprises a label structure.
 11. A system comprising: data processinghardware; and memory hardware in communication with the data processinghardware, the memory hardware storing instructions that when executed onthe data processing hardware cause the data processing hardware toperform operations comprising: grouping multiple resources from aplurality of resources into a resource group, the plurality of resourcesdistributed across a hybrid computing environment comprising a publiccomputing environment and a private computing environment, the dataprocessing hardware in communication with the hybrid computingenvironment and interoperable with the public computing environment andthe private computing environment; assigning a user-defined label toeach resource in the resource group, the user-defined label compatiblewith the public computing environment and the private computingenvironment; receiving a resource policy to be applied to the resourcegroup assigned the user-defined label, the resource policy defining anaccess control policy for an authorized group of users allowed to editthe user-defined label assigned to each resource in the resource group;and applying, via the public computing environment and the privatecomputing environment, the resource policy to the multiple resources inthe resource group.
 12. The system of claim 11, wherein the user-definedlabel comprises a key-value pair.
 13. The system of claim 12, whereinthe key-value pair comprises a unique user-defined string of characters.14. The system of claim 12, wherein a key of the key-value pair isassociated with multiple different values.
 15. The system of claim 11,wherein receiving the resource policy comprises receiving the resourcepolicy from an administrative user.
 16. The system of claim 11, whereinthe resource policy further defines at least one of a firewall policy, anetworking policy, or a quota policy.
 17. The system of claim 11,wherein the private computing environment comprises an on-premisescomputing environment.
 18. The system of claim 11, wherein the pluralityof resources comprise at least one of a virtual machine, a database, akey-value store, or a network.
 19. The system of claim 11, wherein theuser-defined label comprises a location of the resource group within thehybrid computing environment.
 20. The system of claim 11, wherein theuser-defined label comprises a label structure.